#ifndef _PROXY_H_
#define _PROXY_H_

class Subject
{
public:
	virtual ~Subject();
	virtual void Request() = 0;
protected:
	Subject();
};

class RealSubject : public Subject
{
public:
	RealSubject();
	~RealSubject();
	void Request();
};

class Proxy : public Subject
{
public:
	Proxy();
	Proxy( Subject* sub );
	~Proxy();
	void Request();
private:
	Subject* _sub;
};

#endif//_PROXY_H_